
(define (stack . l)
  (vector (length l) l))

(define (stack-push! s value)
  (vector-set! s 0 (+ 1 (vector-ref s 0)))
  (vector-set! s 1 (cons value (vector-ref s 1))))

(define (stack-pop! s)
  (define result (car (vector-ref s 1)))
  (vector-set! s 0 (- (vector-ref s 0) 1))
  (vector-set! s 1 (cdr (vector-ref s 1)))
  result)

